/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package relatorio.cidade;

import camada.bancodedados.daoimplemente.auxiliar.MunicipioDAOImpl;
import eloma.classe.auxiliar.Municipio;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author Ícaro
 */
public class ReportCidades {

    private InputStream relJasper;
    private JRBeanCollectionDataSource ds;
    private Hashtable parametros;
    //private HashMap parametros;
    private List<Municipio> listaMunicipio;
    private String nome = "Praia Grande";
    private MunicipioDAOImpl daoMunicipio;

    public ReportCidades() {
        carregarDados();
    }

    public ReportCidades(List<Municipio> listaMunicipio, String decricao) {
        this.listaMunicipio = listaMunicipio;
        this.nome = nome;
    }

    private void carregarDados() {
        this.listaMunicipio = getSaidaCheque();
    }

    private List<Municipio> getSaidaCheque() {
        List<Municipio> lista = new ArrayList<Municipio>();
        try {
            lista = daoMunicipio.carregarTodosMunicipios();
            return lista;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

    private void prepararRelatorio() {

        //Caminho do .jasper do relatorio
        String caminhoRelJasper = "reportCidades.jasper";

        //Stream com o .jasper
        relJasper = this.getClass().getResourceAsStream(caminhoRelJasper);

        //O datasource
        ds = new JRBeanCollectionDataSource(listaMunicipio);

        //Parametros do relatorios
        //HashMap parametros = new HashMap();  
        parametros = new Hashtable();
        //coloque os valores como String para ficar mais facil de manipular
        //Map parametross = new HashMap();
        parametros.put("nome", nome);

    }

    public void imprimir() {
        prepararRelatorio();

        JasperPrint impressao = null;
        try {
            //parametros.put("parDataIni", _param1);  

            impressao = JasperFillManager.fillReport(relJasper, parametros, ds);
            int finalPag = impressao.getPages().size() - 1;
            System.out.println("Tamanho da página " + finalPag);
            JasperPrintManager.printPages(impressao, 0, finalPag, true);
        } catch (JRException e) {
        }
    }

    public void exibirRelatorio() {
        prepararRelatorio();

        JasperPrint impressao = null;
        try {
            impressao = JasperFillManager.fillReport(relJasper, parametros, ds);
            JasperViewer viewer = new JasperViewer(impressao, false);
            viewer.setVisible(true);
            viewer.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
        } catch (Exception e) {
            String s = e.getMessage();
        }
    }
}
